//--页大小常量
const DMPAPER_LETTER        =     1 ;/* Letter 8 1/2 x 11 in               */
const DMPAPER_LETTERSMALL   =     2 ;/* Letter Small 8 1/2 x 11 in         */
const DMPAPER_TABLOID       =     3 ;/* Tabloid 11 x 17 in                 */
const DMPAPER_LEDGER        =     4 ;/* Ledger 17 x 11 in                  */
const DMPAPER_LEGAL         =     5 ;/* Legal 8 1/2 x 14 in                */
const DMPAPER_STATEMENT     =     6 ;/* Statement 5 1/2 x 8 1/2 in         */
const DMPAPER_EXECUTIVE     =     7 ;/* Executive 7 1/4 x 10 1/2 in        */
const DMPAPER_A3            =     8 ;/* A3 297 x 420 mm                    */
const DMPAPER_A4            =     9 ;/* A4 210 x 297 mm                    */
const DMPAPER_A4SMALL       =    10 ;/* A4 Small 210 x 297 mm              */
const DMPAPER_A5            =    11 ;/* A5 148 x 210 mm                    */
const DMPAPER_B4            =    12 ;/* B4 (JIS) 250 x 354                 */
const DMPAPER_B5            =    13 ;/* B5 (JIS) 182 x 257 mm              */
const DMPAPER_FOLIO         =    14 ;/* Folio 8 1/2 x 13 in                */
const DMPAPER_QUARTO        =    15 ;/* Quarto 215 x 275 mm                */
const DMPAPER_10X14         =    16 ;/* 10x14 in                           */
const DMPAPER_11X17         =    17 ;/* 11x17 in                           */
const DMPAPER_NOTE          =    18 ;/* Note 8 1/2 x 11 in                 */
const DMPAPER_ENV_9         =    19 ;/* Envelope #9 3 7/8 x 8 7/8          */
const DMPAPER_ENV_10        =    20 ;/* Envelope #10 4 1/8 x 9 1/2         */
const DMPAPER_ENV_11        =    21 ;/* Envelope #11 4 1/2 x 10 3/8        */
const DMPAPER_ENV_12        =    22 ;/* Envelope #12 4 \276 x 11           */
const DMPAPER_ENV_14        =    23 ;/* Envelope #14 5 x 11 1/2            */
const DMPAPER_CSHEET        =    24 ;/* C size sheet                       */
const DMPAPER_DSHEET        =    25 ;/* D size sheet                       */
const DMPAPER_ESHEET        =    26 ;/* E size sheet                       */
const DMPAPER_ENV_DL        =    27 ;/* Envelope DL 110 x 220mm            */
const DMPAPER_ENV_C5        =    28 ;/* Envelope C5 162 x 229 mm           */
const DMPAPER_ENV_C3        =    29 ;/* Envelope C3  324 x 458 mm          */
const DMPAPER_ENV_C4        =    30 ;/* Envelope C4  229 x 324 mm          */
const DMPAPER_ENV_C6        =    31 ;/* Envelope C6  114 x 162 mm          */
const DMPAPER_ENV_C65       =    32 ;/* Envelope C65 114 x 229 mm          */
const DMPAPER_ENV_B4        =    33 ;/* Envelope B4  250 x 353 mm          */
const DMPAPER_ENV_B5        =    34 ;/* Envelope B5  176 x 250 mm          */
const DMPAPER_ENV_B6        =    35 ;/* Envelope B6  176 x 125 mm          */
const DMPAPER_ENV_ITALY     =    36 ;/* Envelope 110 x 230 mm              */
const DMPAPER_ENV_MONARCH   =    37 ;/* Envelope Monarch 3.875 x 7.5 in    */
const DMPAPER_ENV_PERSONAL  =    38 ;/* 6 3/4 Envelope 3 5/8 x 6 1/2 in    */
const DMPAPER_FANFOLD_US    =    39 ;/* US Std Fanfold 14 7/8 x 11 in      */
const DMPAPER_FANFOLD_STD_GERMAN = 40 ;/* German Std Fanfold 8 1/2 x 12 in   */
const DMPAPER_FANFOLD_LGL_GERMAN = 41 ;/* German Legal Fanfold 8 1/2 x 13 in */
const DMPAPER_ISO_B4             = 42 ;/* B4 (ISO) 250 x 353 mm              */
const DMPAPER_JAPANESE_POSTCARD  = 43 ;/* Japanese Postcard 100 x 148 mm     */
const DMPAPER_9X11               = 44 ;/* 9 x 11 in                          */
const DMPAPER_10X11              = 45 ;/* 10 x 11 in                         */
const DMPAPER_15X11              = 46 ;/* 15 x 11 in                         */
const DMPAPER_ENV_INVITE         = 47 ;/* Envelope Invite 220 x 220 mm       */
const DMPAPER_RESERVED_48        = 48 ;/* RESERVED--DO NOT USE               */
const DMPAPER_RESERVED_49        = 49 ;/* RESERVED--DO NOT USE               */
const DMPAPER_LETTER_EXTRA       = 50 ;/* Letter Extra 9 \275 x 12 in        */
const DMPAPER_LEGAL_EXTRA        = 51 ;/* Legal Extra 9 \275 x 15 in         */
const DMPAPER_TABLOID_EXTRA      = 52 ;/* Tabloid Extra 11.69 x 18 in        */
const DMPAPER_A4_EXTRA           = 53 ;/* A4 Extra 9.27 x 12.69 in           */
const DMPAPER_LETTER_TRANSVERSE  = 54 ;/* Letter Transverse 8 \275 x 11 in   */
const DMPAPER_A4_TRANSVERSE      = 55 ;/* A4 Transverse 210 x 297 mm         */
const DMPAPER_LETTER_EXTRA_TRANSVERSE = 56; /* Letter Extra Transverse 9\275 x 12 in */
const DMPAPER_A_PLUS           =  57 ; /* SuperA/SuperA/A4 227 x 356 mm      */
const DMPAPER_B_PLUS           =  58 ; /* SuperB/SuperB/A3 305 x 487 mm      */
const DMPAPER_LETTER_PLUS      =  59 ; /* Letter Plus 8.5 x 12.69 in         */
const DMPAPER_A4_PLUS          =  60 ; /* A4 Plus 210 x 330 mm               */
const DMPAPER_A5_TRANSVERSE    =  61 ; /* A5 Transverse 148 x 210 mm         */
const DMPAPER_B5_TRANSVERSE    =  62 ; /* B5 (JIS) Transverse 182 x 257 mm   */
const DMPAPER_A3_EXTRA         =  63 ; /* A3 Extra 322 x 445 mm              */
const DMPAPER_A5_EXTRA         =  64 ; /* A5 Extra 174 x 235 mm              */
const DMPAPER_B5_EXTRA         =  65 ; /* B5 (ISO) Extra 201 x 276 mm        */
const DMPAPER_A2               =  66 ; /* A2 420 x 594 mm                    */
const DMPAPER_A3_TRANSVERSE    =  67 ; /* A3 Transverse 297 x 420 mm         */
const DMPAPER_A3_EXTRA_TRANSVERSE = 68;  /* A3 Extra Transverse 322 x 445 mm   */
const DMPAPER_DBL_JAPANESE_POSTCARD =69; /* Japanese Double Postcard 200 x 148 mm */
const DMPAPER_A6               =  70 ; /* A6 105 x 148 mm                 */
const DMPAPER_JENV_KAKU2       =  71 ; /* Japanese Envelope Kaku #2       */
const DMPAPER_JENV_KAKU3       =  72 ; /* Japanese Envelope Kaku #3       */
const DMPAPER_JENV_CHOU3       =  73 ; /* Japanese Envelope Chou #3       */
const DMPAPER_JENV_CHOU4       =  74 ; /* Japanese Envelope Chou #4       */
const DMPAPER_LETTER_ROTATED   =  75 ; /* Letter Rotated 11 x 8 1/2 11 in */
const DMPAPER_A3_ROTATED       =  76 ; /* A3 Rotated 420 x 297 mm         */
const DMPAPER_A4_ROTATED       =  77 ; /* A4 Rotated 297 x 210 mm         */
const DMPAPER_A5_ROTATED       =  78 ; /* A5 Rotated 210 x 148 mm         */
const DMPAPER_B4_JIS_ROTATED   =  79 ; /* B4 (JIS) Rotated 364 x 257 mm   */
const DMPAPER_B5_JIS_ROTATED   =  80 ; /* B5 (JIS) Rotated 257 x 182 mm   */
const DMPAPER_JAPANESE_POSTCARD_ROTATED = 81; /* Japanese Postcard Rotated 148 x 100 mm */
const DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED =82; /* Double Japanese Postcard Rotated 148 x 200 mm */
const DMPAPER_A6_ROTATED         = 83 ; /* A6 Rotated 148 x 105 mm         */
const DMPAPER_JENV_KAKU2_ROTATED = 84 ; /* Japanese Envelope Kaku #2 Rotated */
const DMPAPER_JENV_KAKU3_ROTATED = 85 ; /* Japanese Envelope Kaku #3 Rotated */
const DMPAPER_JENV_CHOU3_ROTATED = 86 ; /* Japanese Envelope Chou #3 Rotated */
const DMPAPER_JENV_CHOU4_ROTATED = 87 ; /* Japanese Envelope Chou #4 Rotated */
const DMPAPER_B6_JIS             = 88 ; /* B6 (JIS) 128 x 182 mm           */
const DMPAPER_B6_JIS_ROTATED     = 89 ; /* B6 (JIS) Rotated 182 x 128 mm   */
const DMPAPER_12X11              = 90 ; /* 12 x 11 in                      */
const DMPAPER_JENV_YOU4          = 91 ; /* Japanese Envelope You #4        */
const DMPAPER_JENV_YOU4_ROTATED  = 92 ; /* Japanese Envelope You #4 Rotated*/
const DMPAPER_P16K               = 93 ; /* PRC 16K 146 x 215 mm            */
const DMPAPER_P32K               = 94 ; /* PRC 32K 97 x 151 mm             */
const DMPAPER_P32KBIG            = 95 ; /* PRC 32K(Big) 97 x 151 mm        */
const DMPAPER_PENV_1             = 96 ; /* PRC Envelope #1 102 x 165 mm    */
const DMPAPER_PENV_2             = 97 ; /* PRC Envelope #2 102 x 176 mm    */
const DMPAPER_PENV_3             = 98 ; /* PRC Envelope #3 125 x 176 mm    */
const DMPAPER_PENV_4             = 99 ; /* PRC Envelope #4 110 x 208 mm    */
const DMPAPER_PENV_5             = 100;/* PRC Envelope #5 110 x 220 mm    */
const DMPAPER_PENV_6             = 101;/* PRC Envelope #6 120 x 230 mm    */
const DMPAPER_PENV_7             = 102;/* PRC Envelope #7 160 x 230 mm    */
const DMPAPER_PENV_8             = 103;/* PRC Envelope #8 120 x 309 mm    */
const DMPAPER_PENV_9             = 104;/* PRC Envelope #9 229 x 324 mm    */
const DMPAPER_PENV_10            = 105;/* PRC Envelope #10 324 x 458 mm   */
const DMPAPER_P16K_ROTATED       = 106;/* PRC 16K Rotated                 */
const DMPAPER_P32K_ROTATED       = 107;/* PRC 32K Rotated                 */
const DMPAPER_P32KBIG_ROTATED    = 108;/* PRC 32K(Big) Rotated            */
const DMPAPER_PENV_1_ROTATED     = 109;/* PRC Envelope #1 Rotated 165 x 102 mm */
const DMPAPER_PENV_2_ROTATED     = 110;/* PRC Envelope #2 Rotated 176 x 102 mm */
const DMPAPER_PENV_3_ROTATED     = 111;/* PRC Envelope #3 Rotated 176 x 125 mm */
const DMPAPER_PENV_4_ROTATED     = 112;/* PRC Envelope #4 Rotated 208 x 110 mm */
const DMPAPER_PENV_5_ROTATED     = 113;/* PRC Envelope #5 Rotated 220 x 110 mm */
const DMPAPER_PENV_6_ROTATED     = 114;/* PRC Envelope #6 Rotated 230 x 120 mm */
const DMPAPER_PENV_7_ROTATED     = 115;/* PRC Envelope #7 Rotated 230 x 160 mm */
const DMPAPER_PENV_8_ROTATED     = 116;/* PRC Envelope #8 Rotated 309 x 120 mm */
const DMPAPER_PENV_9_ROTATED     = 117;/* PRC Envelope #9 Rotated 324 x 229 mm */
const DMPAPER_PENV_10_ROTATED    = 118;/* PRC Envelope #10 Rotated 458 x 324 mm */
//页方向常量
const DMORIENT_PORTRAIT  = 1; //纵向
const DMORIENT_LANDSCAPE = 2;//横向
//--初始化websocket
//参数：url 连接PrintHtml应用程序url
//url 格式:ws://ip:port
String.prototype.format= function(){
    //将arguments转化为数组（ES5中并非严格的数组）
    var args = Array.prototype.slice.call(arguments);
    var count=0;
    //通过正则替换%s
    return this.replace(/%s/g,function(s,i){
        return args[count++];
    });
}
function initPrintHtml(url){
  var webSocket =  new WebSocket(url);	
  return webSocket;	   
}
//判断字符串是否为空
function isStrEmpty(value){
	if (value !== null && value !== undefined && value !== '') {
		return false;
	}else{
		return true;
	}
}
//--打印网页
//参数说明:
//webSocket:init返回的值
//id:每次命令请求id,以识别发的命令
//htmlUrl:网页url，即为需要打印网页的url
//pageSize：指定打印的页大小:A4等
//orientation：指定打印的页方向：横向或纵向
function printHtml(webSocket,id,htmlUrl,printerName,pageSize,orientation){
	var requestJson;
	//校验webSocket,id，htmlUrl,printerName,pageSize,orientation 合理性	
	if(isStrEmpty(webSocket)){
		alert('webSocket 对象为空!');
		return;
	}
	if(isStrEmpty(id)){
		alert('缺少请求id!');
		return;
	}
	if(isStrEmpty(htmlUrl)){
		alert('缺少网页url!');
		return;
	}
	if(isStrEmpty(printerName)){
		alert('缺少打印机名称!');
		return;
	}
	if(isStrEmpty(pageSize)){
		pageSize='';
	}
	if(isStrEmpty(orientation)){
		orientation='';
	}
	requestJson='{"id":"%s","url":"%s","printer":"%s","config":[{"type":"pagesize","value":"%s"},{"type":"orientation","value":"%s"}]}';
	requestJson = requestJson.format(id,htmlUrl,printerName,pageSize,orientation);
	webSocket.send(requestJson);	
}
/**
 *产生guid
 */
function newGuid()
{
    var guid = "";
    for (var i = 1; i <= 32; i++){
      var n = Math.floor(Math.random()*16.0).toString(16);
      guid +=   n;
      if((i==8)||(i==12)||(i==16)||(i==20))
        guid += "-";
    }
    return guid;    
}